10403
9317
У мене є масив statsname як
яблуко
X
банан
Y
Ківі
z
Мені потрібно помістити яблуко, банан та ківі у масив Fruits та X, Y та Z у масив, який називається алфавітами.
Будь-який простий механізм C # для нього, будь ласка? 
Використовуйте IEnumerable  .Where перевантаження, що забезпечує індекс.
var fruit = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Вкрадено з Як отримати альтернативні елементи, використовуючи Enumerable в C #
var фрукти = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Якщо я зрозумів, що ви правильно ставите питання, що ви хочете, це дуже просто:
Ви хочете помістити фрукти в масив фруктів, і те саме для алфавітів, і вони альтернативно відображаються в масиві statsname так:
для (int i = 0, j = 0; i  list = new List  () {"apple", "X", "banana", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Виберіть (x => x. Виберіть (v => v.l) .ToList ())
.ToList ();
Тоді у вас є список списків:
|
list  фрукти = new List  ();
list  alphabet = new List  ();
for (int i = 0; i  everyOther  (колекція IEnumerable )
{
за допомогою (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
прибутковість е.Ток;
e.MoveNext (); // пропустити один
}
}
}
Ви можете використовувати System.Linq.Skip, щоб пропустити перший елемент.
рядок [] words = "apple X banana Y Kiwi z" .Split ();
var fruit = everyOther (слова);
var alphabets = everyOther (words.Skip (1));
Просто використовуйте їх як нову колекцію або зателефонуйте до них .ToArray () або .ToList ():
foreach (рядок f у фруктах)
Console.WriteLine (f);
рядок [] anArray = fruit.ToArray (); // за допомогою System.Linq
Тепер у вас є те, що вам потрібно.
Ітератори - це методи, які дають віддачу, див. Ітератори (Керівництво з програмування на C #). Це дуже сильна особливість мови. Ти можеш:
пропустити елементи
прикрашати елементи
змінити порядок
об'єднувати послідовності (див. System.Linq.Concat)
...
|
Ось деякий робочий код, сподіваємось, це буде корисним для вас:
за допомогою системи;
за допомогою System.Collections.Generic;
використання System.IO;
за допомогою System.Linq;
використання System.Text;
використання System.Threading.Tasks;
простір імен ReadFile
{
клас Програма
{
статична порожнеча ReadFile (рядок filePath, List  custumerNames, List  phoneNumbers)
{
рядок рядок = рядок.Порожній;
var fileStream = новий StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (рядок));
isPhoneNumber = false;
}
ще
{
custumerNames.Add (рядок);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (рядок [] аргументи)
{
Console.WriteLine ("Розпочато читати файл ...");
List  custumersNamesList = новий список  ();
List  custumersPhonesNumbers = новий список  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Припускаючи, що обидва списки мають однакову довжину.
for (int i = 0; i